El programa de Shell /bin/bash (en adelante referido como
“the
shell”) utiliza una colección de ficheros de inicio para ayudar a crear un entorno de ejecución. Cada archivo tiene un uso específico y puede afectar a los entornos interactivos y de login de manera diferente. Los archivos en el directorio/etc
proporcionan ajustes globales. Si existe un fichero en el directorio principal, se podrían modificar los ajustes globales.
Un intérprete de ingreso interactivo se inicia tras entrar en el sistema, usando
/bin/login, mediante la lectura del archivo /etc/passwd
. Un shell interactivo de no ingreso se inicia en la línea de comandos (por ejemplo, [prompt]$
/bin/bash). Un intérprete no interactivo está presente usualmente cuando un shell script se está ejecutando. Es no interactivo porque está procesando un script y no esperando indicaciones del usuario entre comandos.
Para más información, vea info bash en la sección Bash Startup Files and Interactive Shells.
Los archivos /etc/profile
y ~/.bash_profile
son leídos cuando la shell se invoca como una shell interactiva de login.
El fichero base /etc/profile
establece algunas variables de entorno necesarias para el soporte de idioma nativo. Si se ajustan correctamente se obtiene:
La salida de los programas traducida al idioma nativo
Correcta clasificación de los caracteres en letras, dígitos y otros tipos. Esto es necesario para que bash acepte correctamente los caracteres no ASCII en líneas de comandos en idiomas diferentes al inglés
La correcta ordenación alfabética para el país
Adecuado tamaño de papel predeterminado
Formato correcto para los valores monetarios, hora y fecha
Reemplace a continuación <ll>
con el código de dos letras del idioma deseado (por ejemplo, “en”) y
<CC>
con el código de dos letras para el país (por ejemplo, “GB”).
<charmap>
debería ser reemplazado con la charmap canónica para su ubicación elegida. Modificadores opcionales como “@euro” también pueden estar presentes.
La lista de todas las locales soportadas por Glibc se puede obtener ejecutando el siguiente comando:
locale -a
Los mapas de caractéres pueden tener una serie de sinónimos, por ejemplo, “ISO-8859-1” es también conocido como “iso8859-1” y “iso88591”.
Algunas aplicaciones no pueden manejar correctamente los diversos sinónimos (por ejemplo, se requiere que “UTF-8” se escriba como “UTF-8”, y no como
“utf8”), por lo que es más seguro en la mayoría de los casos elegir el nombre canónico de la locale. Para determinar el nombre canónico, ejecute el siguiente comando, donde <locale name>
es la salida dada por locale -a
para tu ubicación preferida (“en_GB.iso88591” en nuestro ejemplo).
LC_ALL=<locale name>
locale charmap
Para la localización “en_GB.iso88591” el anterior comando, mostrará:
ISO-8859-1
Esto da lugar a una configuración regional final de “en_GB.ISO-8859-1”. Es importante que la ubicación encontrada utilizando el método anterior sea comprobada antes de añadirla a los ficheros de inicio de Bash:
LC_ALL=<locale name> locale language LC_ALL=<locale name> locale charmap LC_ALL=<locale name> locale int_curr_symbol LC_ALL=<locale name> locale int_prefix
Los comandos deberán mostrar el nombre del idioma, la codificación de caracteres utilizados por el entorno local, la moneda local, y el prefijo a marcar antes del número de teléfono con el fin de entrar en el país. Si alguno de los comandos anteriores fallan con un mensaje similar al que se muestra a continuación, esto significa que su ubicación no se instaló en el capítulo 6 o no cuenta con sosporte de la instalación por defecto de Glibc.
locale: Cannot set LC_* to default locale: No such file or directory
Si esto sucede, usted debe instalar el entorno nacional deseado usando el comando localedef, o considerar la elección de una configuración regional diferente. Las instrucciones a continuación asumen que no hay mensajes de error procedentes de Glibc.
Algunos paquetes más allá del LFS pueden carecer de apoyo para su ubicación elegida. Un ejemplo es la librería X (parte del sistema X Window), que emite el siguiente mensaje de error si la configuración regional no coincide exactamente con uno de los nombres del mapa de caracteres de sus ficheros internos:
Warning: locale not supported by Xlib, locale set to C
En varios casos Xlib espera que el mapa de caracteres sea listado en mayúsculas y con guiones. Por ejemplo, "ISO-8859-1" en lugar de "iso88591". También es posible encontrar una especificación apropiada mediante la eliminación de la parte del mapa de la especificación de la configuración regional. Esto se puede comprobar ejecutando el comando locale charmap en ambos locales. Por ejemplo, habría que cambiar "de_DE.ISO-8859-15 @ euro" por "de_DE @ euro" con el fin de obtener esta localidad reconocida por Xlib.
Otros paquetes también pueden funcionar incorrectamente (pero no necesariamente mostrar un mensaje de error) si el nombre de entorno nacional no cumple con sus expectativas. En estos casos, investigar cómo otras distribuciones Linux soportan tu ubicación podría proporcionar información útil.
Una vez que los ajustes correctos para el idioma se han determinado, crea el archivo
/etc/profile
:
cat > /etc/profile << "EOF"
# Begin /etc/profile
export LANG=<ll>_<CC>.<charmap><@modifiers>
# End /etc/profile
EOF
La ubicación de la“C” (por defecto) y “en_US” (la recomendada para los usuarios de Estados Unidos en inglés) son diferentes.“C” utiliza el US-ASCII juego de caracteres de 7 bits, y trata bytes con el bit alto establecido como caracteres no válidos. Es por eso que, por ejemplo, el comando ls los sustituye con interrogantes en dicha localidad. También, un intento de enviar correo con caracteres de Mutt o Pine da como resultado el envío de mensajes que no son RFC conformes (el juego de caracteres en el correo saliente se indica como “unknown 8-bit”). Así que usted puede utilizar la localización “C” sólo si está seguro de que nunca tendrá caracteres de 8 bits.
Las locales basadas en UTF-8 no son compatibles por muchos programas. Se está trabajando para documentar y, si es posible, solucionar este tipo de problemas. Para más información, consulte http://www.linuxfromscratch.org/blfs/view/svn/introduction/locale-issues.html.